package Game;

import java.awt.*;

/**
 * Represents the abstract idea of a game.
 * 
 * @author YQ
 */
public abstract class AbstractGame
{
	protected AbstractLevel[] myLevelArray;
	protected String[] mySpriteArray;
	protected String myName;
	protected Image myScreenshot;
	protected Image mySplashScreen;
	protected Boolean winner;
	protected Boolean gameOver;
	
	public AbstractLevel[] getLevelArray()
	{
		return( myLevelArray );
	}
	
	public String[] getSpriteArray()
	{
		return( mySpriteArray );
	}
	
	public String getName()
	{
		return( myName );
	}
	
	public Image getScreenshot()
	{
		return( myScreenshot );
	}
	
	public Image getSplashScreen()
	{
		return( mySplashScreen );
	}
	
	/**
	 * Contains conditions for user winning the game.  Return true if the user
	 * won, false otherwise.
	 * @return
	 */
	public abstract Boolean winGame();
	
	
	/**
	 * Contains conditions for user losing the game.  Return true if the user
	 * lost, false otherwise. 
	 * @return
	 */
	public abstract Boolean loseGame();
	
	
	/**
	 * Takes a collision and allows programmer to track changes in the Game.
	 * This will allow the game to track the status of the game (i.e. when 
	 * there are no more instances of a certain Sprite or if all lives are lost)
	 * 
	 * @param a
	 * @param b
	 */
	public abstract void collision(AbstractSprite a, AbstractSprite b);
	
}